The disclosure relates to systems and methods making use of software design visualization tools, e.g., UML (Unified Modeling Language) diagrams, for the selection of development resources during a design phase by detecting and using a design component history.
The Unified Modeling Language is used to specify, visualize, modify, construct and document the artifacts of a software-intensive system under development. UML offers a standard way to visualize a system's architectural blueprints, including elements such as: activities, actors, business processes, database schemas, (logical) components, programming language statements, reusable software components.
UML combines techniques from data modeling (entity relationship diagrams), business modeling (work flows), object modeling, and component modeling. It can be used with all processes, throughout a software development life cycle, and across different implementation technologies. UML has synthesized the notations of the Booch method, the Object-modeling technique (OMT) and Object-oriented software engineering (DOSE) by fusing them into a single, common and widely usable modeling language. UML aims to be a standard modeling language which can model concurrent and distributed systems. UML is a de facto industry standard, and is evolving under the auspices of the Object Management Group (OMG). UML models may be automatically transformed to other representations (e.g. Java) by means of QVT-like transformation languages. UML is extensible, with two mechanisms for customization: profiles and stereotypes.
Further, Rational Software Architect, (RSA) made by current assignee International Business Machines incorporated (IBM's Rational Software division), is a comprehensive modeling and development environment that uses the Unified Modeling Language (UML) for designing architecture for C++ and Java 2 Enterprise Edition (J2EE) applications and web services. Rational Software Architect is built on the Eclipse open-source software framework and includes capabilities focused on architectural code analysis, C++, and model-driven development (MDD) with the UML for creating resilient applications and web services.
However, within large complex systems, it is common for architectural components to evolve as functions are added or enhanced. These components may have been developed during an earlier release. Alternatively, they may be reused from other systems or from component repositories. In either case, it is advantageous to retain the resources (e.g., software developers) that developed these components. However with a highly dynamic staffing model, it is difficult to retain resources even when additional enhancements are anticipated.
What is needed is a system and method to assist in optimal staffing as components evolve or are reused.
Moreover, a development project goes through a number of phases before it is delivered. While the phases differ in scope and purpose based on the method chosen, a typical project is executed through analysis, design, development and testing. The architecture model established early in the analysis phase continuously evolves through the phases. During this evolution process as assumptions and decisions are elaborated, the initial model often undergoes change. Previously identified components may no longer be needed, component responsibilities may be changed or new components may be needed. As these changes occur, the skill set needed to execute the project also changes. Presently, it is difficult to continuously adjust the staffing model to reach optimal staffing. The process is manual and tedious. It would be desirable to provide methods to optimize development resource selection based on architecture models.
Further methods are needed to continuously evaluate the architecture model against assigned resources, and take reassignment steps as soon as a change is detected.
Further, when development resource skills do not exactly match the needs specified by the architecture model, methods are needed to automatically generate a lesson plan for the development resources so that they may increase their skills.